HAND-HELD 3D PRINTER (UV) ΕΜΒΙΟΜΗΧΑΝΙΚΗ & ΒΙΟΙΑΤΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ
Γλυμής Ευθύμιος Θεοδωρόπουλος Αντώνιος Μπούτσικος Γεώργιος Παναγιωτόπουλος Ηλίας Ευχαριστίες στον Νίκο Καβαλόπουλο και τα υπόλοιπα μέλη του εργαστηρίου για την συνδρομή και την βοήθειά τους. ΠΕΡΙΕΧΟΜΕΝΑ
Τι είναι το hand-held 3D printer και πως δουλεύει;
Γιατί υπάρχει η ανάγκη για δημιουργία κάτι καινούργιου;
Μειονεκτήματα και αντιμετώπισή τους
Επιλογή κινητήρα
Κατασκευή κυρίως μέρους
Υλικό μέσα στη σύριγγα
Επιλογή UV
Κατασκευαστικά σχέδια
Ηλεκρτικό κύκλωμα
Προγραμματισμός
Μελλοντικά σχέδια
Βιβλιογραφία
1. ΤΙ ΕΙΝΑΙ ΤΟ 3D ΒΙΟPEN ΚΑΙ ΠΩΣ ΔΟΥΛΕΥΕΙ;
Στα πλαίσια της ανάπτυξης νέων μεθόδων αντιμετώπισης τραυμάτων, επιστήμονες κινούνται στην κατεύθυνση της δημιουργίας ενός 3Dprinter χειρός, που θα έχει τη δυνατότητα να τοποθετεί κύτταρα σε «στερεή» μορφή πάνω σε πληγές και τραυματισμένα κόκκαλα. Με τη μέθοδο αυτή δημιουργούμε νέους ιστούς, μειώνοντας το χρόνο της επέμβασης και πετυχαίνοντας ταχύτερη επούλωση του τραύματος. Σε μία συσκευή είναι τοποθετημένες δύο σύριγγες, οι οποίες καταλήγουν σε ένα σημείο μίξης και έπειτα σε βελόνα. Πάνω στη συσκευή είναι στερεωμένη μια κεφαλή UV, η οποία πολυμερίζει το υλικό που βγαίνει από την βελόνας. Τα δύο gel που υπάρχουν μέσα στη σύριγγα μεταφέρονται με σωληνάκια από δύο αντλίες. Οι αντλίες έχουν διαστάσεις 15cmx20cm x25cm και είναι τοποθετημένες πάνω στο πάγκο του εργαστηρίου. Η μία μεταφέρει το κυτταρικό υλικό, το οποίο είναι αναμειγμένο με ένα βιοπολυμερές (alginate). Η δεύτερη μεταφέρει ένα gel, το οποίο βοηθάει, ώστε το μείγμα να μπορεί να στερεοποιηθεί, αφού τοποθετηθεί στη πληγή. Η συσκευή UV τροφοδοτείται από την κεντρική μονάδα, η οποία τοποθετείται και αυτή δίπλα στις αντλίες. Από την κεντρική μονάδα φεύγει ένα καλώδιο, το οποίο καταλήγει στην κεφαλή του UV και στερεώνεται πάνω στη συσκευή με ειδική διαμόρφωση, εστιάζοντας στο σημείο έγχυσης της βελόνας. Η ένταση της UV ακτινοβολίας μπορεί να μεταβληθεί από το κεντρικό διαμεσολαβητή, για να μπορεί να πολυμεριστεί επαρκώς το υλικό σε όλες τις δυνατές παροχές. Μια συνηθισμένη τιμή έντασης για τη διαδικασία αυτή είναι τα 6000 mW/ cm². Τα δύο αυτά gel αναμιγνύονται και έπειτα τοποθετούνται πάνω στις πληγές σε στρώσεις, φτιάχνοντας έτσι μια τρισδιάστατη δομή. Η στερεοποίηση τους, όπως αναφέρθηκε και προηγουμένως, επιτυγχάνεται με τη μέθοδο του πολυμερισμού με UV. Όσον αφορά τα συστατικά που χρησιμοποιούνται για αυτή τη διαδικασία, έχουμε τα εξής. Toalginate προέρχεται από ένα εκχύλισμα καφέ φυκιού, το οποίο είναι φιλικό προς τα κύτταρα, μη τοξικό και μπορεί να χρησιμοποιηθεί ως φορέας τους. Με αυτό το τρόπο τα προστατεύει από εξωτερικές συνθήκες και τα βοηθάει να αναπτυχθούν.
Μόλις σχεδιαστεί το gel στην πληγή, πολλαπλασιάζονται τα κύτταρα και σχηματίζουν ιστούς, νεύρα και μείς. Η εφαρμογή αυτή μπορεί να φανεί χρήσιμη σε χτυπημένα κόκκαλα και χόνδρους. 2. ΓΙΑΤΙ ΦΤΙΑΧΝΟΥΜΕ ΚΑΤΙ ΚΑΙΝΟΥΡΓΙΟ; Μετά από ανάλυση της ήδη υπάρχουσας συσκευής εντοπίσαμε κάποια μειονεκτήματα, τα οποία εμποδίζουν την χρήση της συγκεκριμένης διάταξης σε διαφορετικές τοποθεσίες και εφαρμογές. Οι συσκευές που χρησιμοποιούνται για την διαδικασία αυτή είναι αρκετά βαριές, με αποτέλεσμα να καθιστούν δύσκολη την μετακίνηση τους και την χρήση τους. Επίσης βασίζονται στην μεταφορά των δύο gel μέσα από σωλήνες και σύριγγες, οι οποίες δεν είναι αναλώσιμες. Αυτό έχει ως αποτέλεσμα να πρέπει μετά από κάθε χρήση να καθαρίζεται πολύ καλά ή να χρησιμοποιούνται συνέχεια διαφορετικοί σωλήνες. Επίσης, όσον αφορά τις σύριγγες, δεν είναι οι συνήθεις του εμπορίου, οπότε θα έπρεπε είτε να καθαρίζονται και αυτές, είτε να προμηθεύονται ειδικές. Μετά από αυτήν την ανάλυση αποφασίσαμε να κινηθούμε προς την κατεύθυνση αντιμετώπισης αυτών των μειονεκτημάτων. Αποφασίσαμε να κατασκευάσουμε ένα πρωτότυπο, το οποίο θα καλύπτει τα παραπάνω μειονεκτήματα και θα λειτουργεί με παρόμοια λογική, με σκοπό αργότερα να μπορεί να αντικαταστήσει τις ήδη υπάρχουσες διατάξεις. Στην κατεύθυνση αυτή πρέπει να λάβουμε υπόψην κάποιους βασικούς άξονες, γύρω από τους οποίους θα κινηθούμε. Αυτοί είναι:
Αντιμετώπιση μειονεκτημάτων
Εύρεση υλικού πολυμερισμού
Εύρεση έντασης ακτινοβολίας για πολυμερισμό
Σχεδιασμός προωθητικού μηχανισμού για το υλικό
Σχεδιασμός ελέγχου ηλεκτρικού κυκλώματος
Σχεδιασμός εξωτερικού κελύφους
Έλεγχος και δοκιμή για βελτιστοποίηση
Μελλοντικά σχέδια
3. ΑΝΤΙΜΕΤΩΠΙΣΗ ΜΕΙΟΝΕΚΤΗΜΑΤΩΝ
Για να μπορούμε να ξεκινήσουμε την διαδικασία ανάπτυξης αυτής της διάταξης, πρέπει πρώτα να βρούμε λύσεις για τα παραπάνω μειονεκτήματα και πάνω σε αυτές να βασίσουμε όλη την πορεία κατασκευής. Για αρχή αποφασίσαμε να χρησιμοποιήσουμε σύριγγες του εμπορίου, όπου θα μπορούσε ο καθένας να προμηθευτεί από το φαρμακείο σε μεγάλες ποσότητες. Με αυτό το τρόπο καθιστούμε τις σύριγγες αναλώσιμες και μπορούν να χρησιμοποιούνται, ανά πάσα στιγμή, χωρίς να χρειάζονται κάποιο καθαρισμό, άρα μειώνεται και ο χρόνος προετοιμασίας (set-up). Επίσης αποφασίσαμε να χρησιμοποιήσουμε μια σύριγγα αντί για δύο, όπου θα βρίσκεται το τελικό gel που χρησιμοποιούμε. Όσον αφορά την διευκόλυνση της μεταφοράς της συσκευής, έπρεπε να βρούμε μια λύση, η οποία θα μπορούσε να μας ικανοποιήσει την ανάγκη να προωθήσουμε το υλικό μέσα από την σύριγγα χρησιμοποιώντας έναν μηχανισμό χειρός. Επομένως, εξ’ αρχής, αποκλείσαμε το ενδεχόμενο χρήσης κάποιας αντλίας και κινηθήκαμε προς την αξιοποίηση κάποιου κινητήρα, ο οποίος θα κινεί το έμβολο. 4. ΕΠΙΛΟΓΗ ΚΙΝΗΤΗΡΑ Αρχικά, έπρεπε να βρούμε την δύναμη που χρειάζεται να ασκηθεί, ώστε να μπορεί να μετακινηθεί το έμβολο. Για να την υπολογίσουμε χρησιμοποιήσαμε ένα δυναμόμετρο. Γεμίσαμε την σύριγγα με νερό και με τη χρήση του δυναμόμετρου μετρήσαμε την δύναμη 0.5 kg. Εν συνεχεία, πολλαπλασιάσαμε την δύναμη αυτή με ένα συντελεστή ασφαλείας 1.6 για τις απώλειες μέσα στη σύριγγα και την συναρμογή. Επομένως, με βάση τη δύναμη αυτή, θα κάνουμε τους αρχικούς υπολογισμούς για την επιλογή του κινητήρα. Σε αυτή την κατεύθυνση καταλήξαμε σε αρκετές πιθανές λύσεις. Κοινό στοιχείο αυτών ήταν η χρήση βηματικού κινητήρα, ο οποίος θα μας εξασφαλίζει σταθερή παροχή. Πρίν αναφέρουμε την τελική μας επιλογή, ας δούμε την πορεία της σκέψης μας. Αρχικά υπήρξε η ιδέα για επιλογή κινητήρα, ο οποίος θα μετακινούσε όλο το έμβολο της σύριγγας. Αυτό, όμως, μας δημιουργούσε πρόβλημα στο μέγεθος της συσκευής. Θα έπρεπε να είναι το μήκος, τουλάχιστον, δυόμιση συριγγών το οποίο απορρίφθηκε, νωρίς, λόγω κακής εργονομίας. Επομένως, έπρεπε να σκεφτούμε ένα τρόπο για να μειώσουμε το μήκος. Αποφασίσαμε, λοιπόν, να χρησιμοποιήσουμε ένα κομμάτι του εμβόλου και όχι ολόκληρο. Αυτο θα μπορούσε να επιτευχθεί με ένα μηχανισμό, ο οποίος θα λειτουργούσε με τροχαλίες και ιμάντες. Δυστυχώς, αποδείχθηκε ότι ο τρόπος αυτός είχε απροσπέλαστα μειονεκτήματα. Αυτά ήταν η δυσκολία εύρεσης ή κατασκευής του, τα αρκετά μηχανικά μέρη και οι μεγάλες απώλειες, οπότε και απορρίφθηκε γρήγορα. Στην συνέχεια της αναζήτησης βρέθηκε ένας κινητήρας, ο οποίος μεταφέρει κίνηση με τη μέθοδο πηνιόν - κανόνα. Σαν λύση είχε αρκετά θετικά, καθώς ικανοποιούσε την κίνηση που χρειαζόμασταν, χωρίς να χρειάζεται η αξιοποίηση ολόκληρου του εμβόλου, αλλά είχε ένα βασικό πρόβλημα, για το οποίο αναγκαστήκαμε να το απορρίψουμε. Είχε διαστάσεις 5cmx5cm πράγμα που σημαίνει ότι το κέντρο βάρους του θα ήταν στο πίσω μέρος και πως το μέγεθος του θα ήταν αρκετά μεγαλύτερο από αυτό που θέλαμε.
Προς αυτή την κατεύθυνση, αποφασίσαμε ότι πρέπει να βρούμε ένα βηματικό κινητήρα, ο οποίος θα κάνει γραμμική κίνηση. Ψάχνοντας, βρήκαμε τον γραμμικό επενεργητή L2018S0604-T3,5X1, ο οποίος πληρούσε όλες τις προϋποθέσεις, που είχαμε θέσει. Είχε μέγεθος κατάλληλο για στήριξη, μετέδιδε κίνηση γραμμικά και είχε κοχλία (powerscrew), ο οποίος με εμφύτευση μπορούσε να στερεωθεί πάνω σε ειδικά διαμορφωμένο έμβολο, μήκους αρκετά μικρότερου από το ήδη υπάρχον.
5. ΚΑΤΑΣΚΕΥΗ ΚΥΡΙΩΣ ΜΕΡΟΥΣ Αφού επιλέξαμε τον κινητήρα μας, έπρεπε να διαμορφώσουμε τα σημεία συναρμογής, που είχε με τα λοιπά κινητά στοιχεία της κατασκευής μας. Αρχικά, διαμορφώσαμε το νέο μας έμβολο, το οποίο θα «έσπρωχνε» το υγρό. Χρησιμοποιώντας πολυακρυλαμίδιο σαν υλικό, φτιάξαμε ένα κύλινδρο, ο οποίος χωράει μέσα στη σύριγγα και στην άκρη του διαμορφώσαμε μια γεωμετρία για να θηλυκώνει το στεγανωτικό. Για το στεγανωτικό, χρησιμοποιήσαμε έτοιμο το ήδη υπάρχον της σύριγγας και το «κουμπώσαμε» πάνω στην ειδικά διαμορφωμένη γεωμετρία. Επόμενο βήμα ήταν να βρούμε, πως θα γινόταν σφιχτή συναρμογή ανάμεσα στον ατέρμονα και στο έμβολο. Λύση σε αυτό το ερώτημα ήρθε από την ιδιότητα των υλικών να συρρικνώνονται με την έκθεσή τους σε κρύο περιβάλλον. Χρησιμοποιήσαμε υγρό άζωτο για να συσταλεί η άκρη του ατέρμονα και έπειτα το σφηνώσαμε στην τρύπα, που ανοίξαμε στο πίσω μέρος του εμβόλου. Σε αυτό το σημείο είχαμε την συνεργασία του κινητήρα με το έμβολο και την σύριγγα, αλλά έπρεπε με κάποιον τρόπο να σταθεροποιήσουμε όλο το σύστημα. Για να το κάνουμε αυτό, σχεδιάσαμε στο SolidWorks κάποια σχέδια ενός εξωτερικού κελύφους (housing). Για την δημιουργία των τεμαχίων από τα σχέδια αποφασίσαμε να χρησιμοποιήσουμε 2D κατεργασίες. Επομένως όλα τα σχέδια τα κάναμε για 2d κατεργασία και έπειτα τα κατασκευάσαμε με κοπή laser και με την χρήση της φρέζας και του τόρνου. Άλλα εργαλεία που χρειάστηκαν για την τελική διαμόρφωση των τεμαχίων ήταν: τρυπάνι, κουκουνάρα, κόλλα, βίδες, παξιμάδια. Τα τεμάχια που διαμορφώθηκαν παρατίθονται παρακάτω. 5.0 Assembly
5.1. ΔΑΧΤΥΛΙΔΙ ΣΥΓΚΡΑΤΗΣΗΣ ΣΥΡΙΓΓΑΣ
5.2. ΣΤΕΡΕΩΜΑ ΔΑΧΤΥΛΙΔΙΟΥ ΚΑΙ ΚΟΥΜΠΙΩΝ/ΚΑΛΩΔΙΩΝ
5.3. ΠΑΤΟΥΡΑ ΓΙΑ ΣΤΕΡΕΩΣΗ ΣΥΡΙΓΓΑΣ
5.4. ΣΥΓΚΡΑΤΗΣΗ ΚΙΝΗΤΗΡΑ- ΣΥΡΙΓΓΑΣ = HOUSING Μετά από την δημιουργία των τεμαχίων αυτών, από πλέξιγκλας διαφορετικού πάχους, κολλήσαμε το σχέδιο 2 με το 4 με κόλλα LOGGO και τα υπόλοιπα τα βιδώσαμε μεταξύ τους και στερεώσαμε και τον κινητήρα. Τελικά, προέκυψε το παρακάτω τεμάχιο.
5.5. ΗΜΙΤΕΛΕΣ ΤΕΜΑΧΙΟ Σε αυτό το σχέδιο πρέπει να προστεθεί ακόμα το ηλεκτρικό κύκλωμα, το κέλυφος του κινητήρα και το UV. Όσον αφορά το κέλυφος του κινητήρα κατασκευάστηκε με τον ίδιο τρόπο που κατασκευάστηκαν και τα υπόλοιπα κομμάτια με τη διαφορά ότι έγινε σε μαύρο πλέξιγκλας. Παρακάτω φαίνεται το εξωτερικό και το ολικό τελικό κομμάτι.
5.6. HOUSING ΚΙΝΗΤΗΡΑ
5.7. ΤΕΛΙΚΟ ΧΩΡΙΣ ΚΥΚΛΩΜΑΜΑ ΚΑΙ UV Μετά το τέλος των κατεργασιών παρατηρήσαμε ότι ο ατέρμονας γυρνούσε μαζί με τον κοχλία, με αποτέλεσμα να μην γίνεται γραμμική κίνηση και να μην μετακινείται το έμβολο. Αυτό οφειλόταν στο γεγονός ότι υπήρχαν αρχικά δύο βαθμοί ελευθερίας, ο περιστροφικός και ο ευθύγραμμος. Με την αδυναμία περιορισμού ενός εκ των δύο βαθμών ελευθερίας δεν θα μπορούσε να γίνει η γραμμική κίνηση. Επομένως, έπρεπε να βρούμε τρόπο να περιορίσουμε την περιστροφική κίνηση. Η λύση σε αυτό το πρόβλημα ήρθε με μια γεωμετρική αλλαγή. Αρχικά είχαμε κάνει την σύνδεση του ατέρμονα στο κέντρο του εμβόλου με αποτέλεσμα να διευκολύνεται η περιστροφική κίνηση. Για αυτό το λόγο κάναμε μια δεύτερη τρύπα 3mm πιο πάνω από την πρώτη, με αποτέλεσμα οι δυνάμεις που δέχεται το έμβολο από την έκκεντρη συναρμογή να εμποδίζουν την περιστροφική κίνηση και να μην επιδρούν στην γραμμική.
6. ΥΛΙΚΟ ΜΕΣΑ ΣΤΗ ΣΥΡΙΓΓΑ
Το gel που χρησιμοποιούμε για αυτή την λειτουργία, όπως αναφέρθηκε και παραπάνω χωρίζεται σε 3 είδη. Αρχικά χρησιμοποιούμε το κυτταρικό υλικό, το οποίο τοποθετούμε μέσα στο alginate για να μπορεί να επιβιώσει και να αναπτυχθεί αργότερα. Για την στερεοποίηση του χρησιμοποιούμε ένα δεύτερο gel το οποίο με τον πολυμερισμό θα σκληρύνει και θα αποτελέσει το στήριγμα του πρώτου. Αυτά τα δύο gel θα βρίσκονται σε σύριγγες σε έναν ειδικά διαμορφωμένο χώρο και από εκεί θα μπορούν οι επιστήμονες να τροφοδοτούν το μηχάνημά μας. Για πιο επιτυχή διαδικασία πολυμερισμού, μπορούμε να συνδυάσουμε το alginate με φουρφουριλαμίνη με σκοπό την δημιουργία του F-alginate. Mε αυτό τον τρόπο μπορούμε να έχουμε καλύτερα αποτελέσματα. Επίσης, προς αυτή την κατεύθυνση μπορούμε να χρησιμοποιήσουμε και φωτο-εκκινητές, όπως το RoseBengal, οι οποίοι αντιδρούν με το φώς και επιταχύνουν τον πολυμερισμό. Όπως είπαμε και στην αρχή, το alginate είναι εκχύλισμα από το καφέ φύκι. Χρησιμοποιείται σε πολλές ιατρικές εφαρμογές, έχει αντιβακτηριδιακές ιδιότητες και την ιδιότητα να βιοδιασπάται και αποτελείται από δύο μονομερή (glucuronic acid – mannuronic acid).
7. ΕΠΙΛΟΓΗ UV
Ο λόγος που χρησημοποιούμε UV LED είναι επειδή περιέχει πρωτόνια υψηλής ενέργειας. Για την επιλογή του UV χρειάζεται να βρούμε την ποσότητα της ενέργειας που χρειάζεται για τον πολυμερισμό του alginate. Μέσα από βιβλιογραφία υπολογίσαμε οτι αυτή η ένταση κυμαίνεται στα 6000 mW/cm². Με αναζήτηση στο διαδίκτυο βρήκαμε μια συσκευή που εκπέμπει αυτή την ένταση, αλλά δεν μπορούσαμε να την αγοράσουμε καθώς το κόστος ξεπερνούσε το budget του project. Η συσκευή, η κεφαλή και ο φακός παρατίθονται παρακάτω.
|| Name
Model
Specification
Quantity
Unit Price
Note
Spot UV LED System
UPS312
Controler, white
1
600$
Wavelength: 365nm, 395nm, 405nm, 450nm
UPH20562
LED Head
4
250$
UPUL
lens
4
40$
Total
890$
8. ΚΑΤΑΣΚΕΥΑΣΤΙΚΑ ΣΧΕΔΙΑ
9. ΗΛΕΚΤΡΙΚΟ ΚΥΚΛΩΜΑ Ο γραμμικός επενεργητής που επιλέξαμε περιέχει ενάν βηματικό κινητήρα. Για τον έλεγχο της κίνησης και της ταχύτητας του βηματικού κινητήρα και κατά συνέπεια όλου του γραμμικού επενεργητή φτιάξαμε ένα ηλεκτρικό κύκλωμα και στη συνέχεια έγινε ο προγραμματισμός του. Το κύκλωμα μας περιείχε το εξής hardware:
Γραμμικός επενεργητής
Μητρική πλακέτα Arduino Uno
EasyDriver (stepper motor driver)
2 pushbuttons
1 led
2 αντιστάσεις 10k Ω
1 αντίσταση 330 Ω
1 τροφοδοτικό 12Volt
1 breadboard
Η συνδεσμολογία παρουσιάζεται στην παρακάτω εικόνα. Ο σχεδιασμός του κυκλώματος και της συνδεσμολογίας έγινε στο πρόγραμμα fritzing.
Σημείωσεις: το πρόγραμμα που χρησιμοποιήθηκε βρίσκεται ακόμα σε beta έκδοση και δεν είχε όλα τα εξαρτήματα που χρησιμοποιήθηκαν στην πραγματικότητα. Συγκεκριμένα στο πραγματικό κύκλωμα δεν υπάρχουνε μπαταρίες, αλλά ένα τροφοδοτικό 12V. Επίσης αντί για έναν απλό βηματικό κινητήρα που εμφανίζεται στη φωτογραφία έχουμε ένα γραμμικό επενεργητή. Τέλος το led που υπάρχει στο κύκλωμα, αντικαθιστά το UV lazer. Μετά την σχεδίαση του κυκλώματος ακολούθησε ο προγραμματισμός του βηματικού κινητήρα με σκοπό να πετύχουμε την επιθυμητή παροχή και για να έχουμε έλεγχο της κατεύθυνσης της κίνησης του γραμμικού επενεργητή. Ο προγραμματισμός έγινε με τη χρήση της γλώσσας Wiring (ουσιαστικά πρόκειται για τη γλώσσα προγραμματισμού C++ ). 10. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
constans wont change. set pin numbers
const byte stepUpPin = 4; step pin back button const byte stepDownPin = 5; step pin foward button const byte stepOut = 3; step tou drivers se pin 2 uno const byte directionOut = 2; direction tou driver se pin 3 uno const byte enablePin = 6; turn EasyDriver off when not turning (saves power but ONLY use when there's no need to hold position) const byte inMotionPin = 10; UV led
variables will change byte lastStepUpButtonState = HIGH; the previous reading from the step UP pin (back button) byte lastStepDownButtonState = HIGH; the previous reading from the step Down pin (foward button) byte directionState = HIGH; the current direction byte stepUpState = HIGH; the current state of Up button byte stepDownState = HIGH; the current state of Down button int stepsPassed = 0; how many steps int stepsPassedMax = 1600; steps per revolution
long lastStepUpDebounceTime = 0; the last time the output was toggled long lastStepDownDebounceTime = 0; the last time the output was toggled long debounceDelay = 50; the debounce time in ms
long stepDelay=3; long lastStepTime = 0; last tiem the step signal was sent void setup() { pinMode (stepUpPin, INPUT); pinMode (stepDownPin, INPUT); pinMode (stepOut, OUTPUT); pinMode (directionOut, OUTPUT); pinMode (enablePin, OUTPUT); pinMode (inMotionPin, OUTPUT); digitalWrite (inMotionPin, HIGH); turn OFF all LEDs in the beginning }
void loop() { read the state of the switch into a local variable: int readingStepUp = digitalRead(stepUpPin); int readingStepDown = digitalRead(stepDownPin);
if(readingStepUp == LOW || readingStepDown == LOW) { only read buttons if either of them is LOW
if the switch changed, due to noise or pressing: if (readingStepUp != lastStepUpButtonState) {
reset the debouncing timer lastStepUpDebounceTime = millis(); lastStepUpButtonState = readingStepUp; } if ((millis() - lastStepUpDebounceTime) > debounceDelay) { whatever the reading is at, its been there for longer
than the debounce delay, so take it as the actual current state: lastStepUpButtonState = readingStepUp; lastStepUpDebounceTime = millis(); stepUpState = readingStepUp; } if the switch changed, due to noise or pressing: if (readingStepDown != lastStepDownButtonState) { lastStepDownDebounceTime = millis(); lastStepDownButtonState = readingStepDown; } if ((millis() - lastStepDownDebounceTime) > debounceDelay) {
whatever the reading is at, its been for longer than the debounce delay, so take it as the actual current state: lastStepDownButtonState = readingStepDown; lastStepDownDebounceTime = millis(); stepDownState = readingStepDown; }
}else{ stepUpState = HIGH; stepDownState = HIGH; } end of if block that reads button states if(stepsPassed == 0 ) { if the previous command has completed, make the direction desicion if(stepUpState == LOW || stepDownState == LOW) { if(stepUpState == LOW && stepDownState == LOW) { directionState = LOW; } why are you holding UP and DOWN buttons if(stepUpState == LOW && stepDownState == HIGH) { directionState = HIGH; } go UP ( back) if(stepUpState == HIGH && stepDownState == LOW) {directionState = LOW;} do DOWN ( foward) stepsPassed = stepsPassedMax+1; } }
if(stepsPassed > 0 ) send step signals now { digitalWrite(enablePin, LOW); wake up digitalWrite(directionOut, directionState); if((millis()- lastStepTime) > stepDelay) delay expired, send another step { digitalWrite(stepOut, HIGH); stepsPassed--; lastStepTime = millis(); }else {
time for one step not yet expired, hold the STEP signal LOW digitalWrite(stepOut, LOW); }}else{ digitalWrite(enablePin, HIGH); go to sleep } if(stepDownState == HIGH) {
digitalWrite(inMotionPin, HIGH);
}else{
digitalWrite(inMotionPin, LOW); } }
11. ΜΕΛΛΟΝΤΙΚΑ ΣΧΕΔΙΑ Αυτό το μοντέλο είναι το πρωτότυπο και είναι αναμενόμενο να παρουσιάζει κάποια ελαττώματα. Η κατασκευή του έγινε με χρήση 2D κατεργασιών με αποτέλεσμα το τελικό τεμάχιο να μην έχει την απαιτούμενη ακρίβεια που χρειαζόμαστε. Για την συναρμογή τους έπρεπε να χρησιμοποιηθούν βίδες με αποτέλεσμα να αυξηθεί αρκετά ο όγκος. Έτσι, χρειάζεται να κατασκευαστεί το σχέδιο με 3d κατεργασίες, ώστε να πετύχουμε την ακρίβεια και να μειώσουμε τις διαστάσεις του. Θα πρέπει να βρεθεί το UVLED που χρειαζόμαστε, ώστε να μπορέσουμε να ολοκληρώσουμε την συσκευή. Επίσης με κατάλληλο συνδυασμό του βιοπολυμερούς με κάποια συγκεκριμένα photoinitiator (όπως το Rose Begnal) μπορούμε να πετύχουμε την αντίδραση του πολυμερισμού σε μικρότερη ένταση, άρα με μικρότερο κόστος. Για να υπολογιστούν όμως αυτές οι τιμές για τον πολυμερισμό του μείγματος αυτού πρέπει να γίνουν πειράματα και αντίστοιχες μελέτες. Όσον αφορά το ηλεκτρονικό κομμάτι, στα μελλοντικά σχέδια υπάρχει η σκέψη τοποθέτησης ρυθμιστικού κουμπιού, το οποίο θα μπορεί να μεταβάλει τα βήματα του κινητήρα. Με αυτό το τρόπο θα μπορούμε κατά βούληση να μεταβάλλουμε την παροχή της σύριγγας. 12. ΦΩΤΟΓΡΑΦΙΚΟ ΥΛΙΚΟ
12.1 ΚΙΝΗΤΗΡΑΣ ΣΥΝΔΕΔΕΜΕΝΟΣ ΜΕ ΤΟ ΕΜΒΟΛΟ
12.2 ΑΠΟΤΥΠΩΜΑ ΕΠΩΝΥΜΩΝ
12.3 ΚΙΝΗΤΗΡΑΣ ΣΥΝΔΕΔΕΜΕΝΟΣ ΜΕ ΣΥΡΙΓΓΑ ΚΑΙ ΚΥΡΙΟ ΣΩΜΑ
12.4 ΤΕΛΙΚΗ ΣΥΣΚΕΥΗ 13. ΒΙΒΛΙΟΓΡΑΦΙΑ Internet links:
ΣΧΟΛΗ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ
HAND-HELD 3D PRINTER (UV)
ΕΜΒΙΟΜΗΧΑΝΙΚΗ & ΒΙΟΙΑΤΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ
Γλυμής Ευθύμιος
Θεοδωρόπουλος Αντώνιος
Μπούτσικος Γεώργιος
Παναγιωτόπουλος Ηλίας
Ευχαριστίες
στον Νίκο Καβαλόπουλο και τα υπόλοιπα μέλη του εργαστηρίου για την συνδρομή και την βοήθειά τους.
ΠΕΡΙΕΧΟΜΕΝΑ
1. ΤΙ ΕΙΝΑΙ ΤΟ 3D ΒΙΟPEN ΚΑΙ ΠΩΣ ΔΟΥΛΕΥΕΙ;
Στα πλαίσια της ανάπτυξης νέων μεθόδων αντιμετώπισης τραυμάτων, επιστήμονες κινούνται στην κατεύθυνση της δημιουργίας ενός 3Dprinter χειρός, που θα έχει τη δυνατότητα να τοποθετεί κύτταρα σε «στερεή» μορφή πάνω σε πληγές και τραυματισμένα κόκκαλα. Με τη μέθοδο αυτή δημιουργούμε νέους ιστούς, μειώνοντας το χρόνο της επέμβασης και πετυχαίνοντας ταχύτερη επούλωση του τραύματος.
Σε μία συσκευή είναι τοποθετημένες δύο σύριγγες, οι οποίες καταλήγουν σε ένα σημείο μίξης και έπειτα σε βελόνα. Πάνω στη συσκευή είναι στερεωμένη μια κεφαλή UV, η οποία πολυμερίζει το υλικό που βγαίνει από την βελόνας. Τα δύο gel που υπάρχουν μέσα στη σύριγγα μεταφέρονται με σωληνάκια από δύο αντλίες.
Οι αντλίες έχουν διαστάσεις 15cmx20cm x25cm και είναι τοποθετημένες πάνω στο πάγκο του εργαστηρίου. Η μία μεταφέρει το κυτταρικό υλικό, το οποίο είναι αναμειγμένο με ένα βιοπολυμερές (alginate). Η δεύτερη μεταφέρει ένα gel, το οποίο βοηθάει, ώστε το μείγμα να μπορεί να στερεοποιηθεί, αφού τοποθετηθεί στη πληγή. Η συσκευή UV τροφοδοτείται από την κεντρική μονάδα, η οποία τοποθετείται και αυτή δίπλα στις αντλίες. Από την κεντρική μονάδα φεύγει ένα καλώδιο, το οποίο καταλήγει στην κεφαλή του UV και στερεώνεται πάνω στη συσκευή με ειδική διαμόρφωση, εστιάζοντας στο σημείο έγχυσης της βελόνας. Η ένταση της UV ακτινοβολίας μπορεί να μεταβληθεί από το κεντρικό διαμεσολαβητή, για να μπορεί να πολυμεριστεί επαρκώς το υλικό σε όλες τις δυνατές παροχές. Μια συνηθισμένη τιμή έντασης για τη διαδικασία αυτή είναι τα 6000 mW/ cm².
Τα δύο αυτά gel αναμιγνύονται και έπειτα τοποθετούνται πάνω στις πληγές σε στρώσεις, φτιάχνοντας έτσι μια τρισδιάστατη δομή. Η στερεοποίηση τους, όπως αναφέρθηκε και προηγουμένως, επιτυγχάνεται με τη μέθοδο του πολυμερισμού με UV.
Όσον αφορά τα συστατικά που χρησιμοποιούνται για αυτή τη διαδικασία, έχουμε τα εξής. Toalginate προέρχεται από ένα εκχύλισμα καφέ φυκιού, το οποίο είναι φιλικό προς τα κύτταρα, μη τοξικό και μπορεί να χρησιμοποιηθεί ως φορέας τους. Με αυτό το τρόπο τα προστατεύει από εξωτερικές συνθήκες και τα βοηθάει να αναπτυχθούν.
Μόλις σχεδιαστεί το gel στην πληγή, πολλαπλασιάζονται τα κύτταρα και σχηματίζουν ιστούς, νεύρα και μείς. Η εφαρμογή αυτή μπορεί να φανεί χρήσιμη σε χτυπημένα κόκκαλα και χόνδρους.
2. ΓΙΑΤΙ ΦΤΙΑΧΝΟΥΜΕ ΚΑΤΙ ΚΑΙΝΟΥΡΓΙΟ;
Μετά από ανάλυση της ήδη υπάρχουσας συσκευής εντοπίσαμε κάποια μειονεκτήματα, τα οποία εμποδίζουν την χρήση της συγκεκριμένης διάταξης σε διαφορετικές τοποθεσίες και εφαρμογές. Οι συσκευές που χρησιμοποιούνται για την διαδικασία αυτή είναι αρκετά βαριές, με αποτέλεσμα να καθιστούν δύσκολη την μετακίνηση τους και την χρήση τους. Επίσης βασίζονται στην μεταφορά των δύο gel μέσα από σωλήνες και σύριγγες, οι οποίες δεν είναι αναλώσιμες. Αυτό έχει ως αποτέλεσμα να πρέπει μετά από κάθε χρήση να καθαρίζεται πολύ καλά ή να χρησιμοποιούνται συνέχεια διαφορετικοί σωλήνες. Επίσης, όσον αφορά τις σύριγγες, δεν είναι οι συνήθεις του εμπορίου, οπότε θα έπρεπε είτε να καθαρίζονται και αυτές, είτε να προμηθεύονται ειδικές.
Μετά από αυτήν την ανάλυση αποφασίσαμε να κινηθούμε προς την κατεύθυνση αντιμετώπισης αυτών των μειονεκτημάτων. Αποφασίσαμε να κατασκευάσουμε ένα πρωτότυπο, το οποίο θα καλύπτει τα παραπάνω μειονεκτήματα και θα λειτουργεί με παρόμοια λογική, με σκοπό αργότερα να μπορεί να αντικαταστήσει τις ήδη υπάρχουσες διατάξεις.
Στην κατεύθυνση αυτή πρέπει να λάβουμε υπόψην κάποιους βασικούς άξονες, γύρω από τους οποίους θα κινηθούμε. Αυτοί είναι:
3. ΑΝΤΙΜΕΤΩΠΙΣΗ ΜΕΙΟΝΕΚΤΗΜΑΤΩΝ
Για να μπορούμε να ξεκινήσουμε την διαδικασία ανάπτυξης αυτής της διάταξης, πρέπει πρώτα να βρούμε λύσεις για τα παραπάνω μειονεκτήματα και πάνω σε αυτές να βασίσουμε όλη την πορεία κατασκευής.
Για αρχή αποφασίσαμε να χρησιμοποιήσουμε σύριγγες του εμπορίου, όπου θα μπορούσε ο καθένας να προμηθευτεί από το φαρμακείο σε μεγάλες ποσότητες. Με αυτό το τρόπο καθιστούμε τις σύριγγες αναλώσιμες και μπορούν να χρησιμοποιούνται, ανά πάσα στιγμή, χωρίς να χρειάζονται κάποιο καθαρισμό, άρα μειώνεται και ο χρόνος προετοιμασίας (set-up). Επίσης αποφασίσαμε να χρησιμοποιήσουμε μια σύριγγα αντί για δύο, όπου θα βρίσκεται το τελικό gel που χρησιμοποιούμε.
Όσον αφορά την διευκόλυνση της μεταφοράς της συσκευής, έπρεπε να βρούμε μια λύση, η οποία θα μπορούσε να μας ικανοποιήσει την ανάγκη να προωθήσουμε το υλικό μέσα από την σύριγγα χρησιμοποιώντας έναν μηχανισμό χειρός. Επομένως, εξ’ αρχής, αποκλείσαμε το ενδεχόμενο χρήσης κάποιας αντλίας και κινηθήκαμε προς την αξιοποίηση κάποιου κινητήρα, ο οποίος θα κινεί το έμβολο.
4. ΕΠΙΛΟΓΗ ΚΙΝΗΤΗΡΑ
Αρχικά, έπρεπε να βρούμε την δύναμη που χρειάζεται να ασκηθεί, ώστε να μπορεί να μετακινηθεί το έμβολο. Για να την υπολογίσουμε χρησιμοποιήσαμε ένα δυναμόμετρο. Γεμίσαμε την σύριγγα με νερό και με τη χρήση του δυναμόμετρου μετρήσαμε την δύναμη 0.5 kg. Εν συνεχεία, πολλαπλασιάσαμε την δύναμη αυτή με ένα συντελεστή ασφαλείας 1.6 για τις απώλειες μέσα στη σύριγγα και την συναρμογή. Επομένως, με βάση τη δύναμη αυτή, θα κάνουμε τους αρχικούς υπολογισμούς για την επιλογή του κινητήρα.
Σε αυτή την κατεύθυνση καταλήξαμε σε αρκετές πιθανές λύσεις. Κοινό στοιχείο αυτών ήταν η χρήση βηματικού κινητήρα, ο οποίος θα μας εξασφαλίζει σταθερή παροχή. Πρίν αναφέρουμε την τελική μας επιλογή, ας δούμε την πορεία της σκέψης μας.
Αρχικά υπήρξε η ιδέα για επιλογή κινητήρα, ο οποίος θα μετακινούσε όλο το έμβολο της σύριγγας. Αυτό, όμως, μας δημιουργούσε πρόβλημα στο μέγεθος της συσκευής. Θα έπρεπε να είναι το μήκος, τουλάχιστον, δυόμιση συριγγών το οποίο απορρίφθηκε, νωρίς, λόγω κακής εργονομίας.
Επομένως, έπρεπε να σκεφτούμε ένα τρόπο για να μειώσουμε το μήκος. Αποφασίσαμε, λοιπόν, να χρησιμοποιήσουμε ένα κομμάτι του εμβόλου και όχι ολόκληρο. Αυτο θα μπορούσε να επιτευχθεί με ένα μηχανισμό, ο οποίος θα λειτουργούσε με τροχαλίες και ιμάντες. Δυστυχώς, αποδείχθηκε ότι ο τρόπος αυτός είχε απροσπέλαστα μειονεκτήματα. Αυτά ήταν η δυσκολία εύρεσης ή κατασκευής του, τα αρκετά μηχανικά μέρη και οι μεγάλες απώλειες, οπότε και απορρίφθηκε γρήγορα.
Στην συνέχεια της αναζήτησης βρέθηκε ένας κινητήρας, ο οποίος μεταφέρει κίνηση με τη μέθοδο πηνιόν - κανόνα. Σαν λύση είχε αρκετά θετικά, καθώς ικανοποιούσε την κίνηση που χρειαζόμασταν, χωρίς να χρειάζεται η αξιοποίηση ολόκληρου του εμβόλου, αλλά είχε ένα βασικό πρόβλημα, για το οποίο αναγκαστήκαμε να το απορρίψουμε. Είχε διαστάσεις 5cmx5cm πράγμα που σημαίνει ότι το κέντρο βάρους του θα ήταν στο πίσω μέρος και πως το μέγεθος του θα ήταν αρκετά μεγαλύτερο από αυτό που θέλαμε.
Προς αυτή την κατεύθυνση, αποφασίσαμε ότι πρέπει να βρούμε ένα βηματικό κινητήρα, ο οποίος θα κάνει γραμμική κίνηση. Ψάχνοντας, βρήκαμε τον γραμμικό επενεργητή L2018S0604-T3,5X1, ο οποίος πληρούσε όλες τις προϋποθέσεις, που είχαμε θέσει. Είχε μέγεθος κατάλληλο για στήριξη, μετέδιδε κίνηση γραμμικά και είχε κοχλία (powerscrew), ο οποίος με εμφύτευση μπορούσε να στερεωθεί πάνω σε ειδικά διαμορφωμένο έμβολο, μήκους αρκετά μικρότερου από το ήδη υπάρχον.
5. ΚΑΤΑΣΚΕΥΗ ΚΥΡΙΩΣ ΜΕΡΟΥΣ
Αφού επιλέξαμε τον κινητήρα μας, έπρεπε να διαμορφώσουμε τα σημεία συναρμογής, που είχε με τα λοιπά κινητά στοιχεία της κατασκευής μας.
Αρχικά, διαμορφώσαμε το νέο μας έμβολο, το οποίο θα «έσπρωχνε» το υγρό. Χρησιμοποιώντας πολυακρυλαμίδιο σαν υλικό, φτιάξαμε ένα κύλινδρο, ο οποίος χωράει μέσα στη σύριγγα και στην άκρη του διαμορφώσαμε μια γεωμετρία για να θηλυκώνει το στεγανωτικό. Για το στεγανωτικό, χρησιμοποιήσαμε έτοιμο το ήδη υπάρχον της σύριγγας και το «κουμπώσαμε» πάνω στην ειδικά διαμορφωμένη γεωμετρία. Επόμενο βήμα ήταν να βρούμε, πως θα γινόταν σφιχτή συναρμογή ανάμεσα στον ατέρμονα και στο έμβολο. Λύση σε αυτό το ερώτημα ήρθε από την ιδιότητα των υλικών να συρρικνώνονται με την έκθεσή τους σε κρύο περιβάλλον. Χρησιμοποιήσαμε υγρό άζωτο για να συσταλεί η άκρη του ατέρμονα και έπειτα το σφηνώσαμε στην τρύπα, που ανοίξαμε στο πίσω μέρος του εμβόλου.
Σε αυτό το σημείο είχαμε την συνεργασία του κινητήρα με το έμβολο και την σύριγγα, αλλά έπρεπε με κάποιον τρόπο να σταθεροποιήσουμε όλο το σύστημα. Για να το κάνουμε αυτό, σχεδιάσαμε στο SolidWorks κάποια σχέδια ενός εξωτερικού κελύφους (housing). Για την δημιουργία των τεμαχίων από τα σχέδια αποφασίσαμε να χρησιμοποιήσουμε 2D κατεργασίες. Επομένως όλα τα σχέδια τα κάναμε για 2d κατεργασία και έπειτα τα κατασκευάσαμε με κοπή laser και με την χρήση της φρέζας και του τόρνου. Άλλα εργαλεία που χρειάστηκαν για την τελική διαμόρφωση των τεμαχίων ήταν: τρυπάνι, κουκουνάρα, κόλλα, βίδες, παξιμάδια.
Τα τεμάχια που διαμορφώθηκαν παρατίθονται παρακάτω.
5.0 Assembly
5.1. ΔΑΧΤΥΛΙΔΙ ΣΥΓΚΡΑΤΗΣΗΣ ΣΥΡΙΓΓΑΣ
5.2. ΣΤΕΡΕΩΜΑ ΔΑΧΤΥΛΙΔΙΟΥ ΚΑΙ ΚΟΥΜΠΙΩΝ/ΚΑΛΩΔΙΩΝ
Μετά από την δημιουργία των τεμαχίων αυτών, από πλέξιγκλας διαφορετικού πάχους, κολλήσαμε το σχέδιο 2 με το 4 με κόλλα LOGGO και τα υπόλοιπα τα βιδώσαμε μεταξύ τους και στερεώσαμε και τον κινητήρα.
Τελικά, προέκυψε το παρακάτω τεμάχιο.
Σε αυτό το σχέδιο πρέπει να προστεθεί ακόμα το ηλεκτρικό κύκλωμα, το κέλυφος του κινητήρα και το UV. Όσον αφορά το κέλυφος του κινητήρα κατασκευάστηκε με τον ίδιο τρόπο που κατασκευάστηκαν και τα υπόλοιπα κομμάτια με τη διαφορά ότι έγινε σε μαύρο πλέξιγκλας. Παρακάτω φαίνεται το εξωτερικό και το ολικό τελικό κομμάτι.
Μετά το τέλος των κατεργασιών παρατηρήσαμε ότι ο ατέρμονας γυρνούσε μαζί με τον κοχλία, με αποτέλεσμα να μην γίνεται γραμμική κίνηση και να μην μετακινείται το έμβολο. Αυτό οφειλόταν στο γεγονός ότι υπήρχαν αρχικά δύο βαθμοί ελευθερίας, ο περιστροφικός και ο ευθύγραμμος. Με την αδυναμία περιορισμού ενός εκ των δύο βαθμών ελευθερίας δεν θα μπορούσε να γίνει η γραμμική κίνηση. Επομένως, έπρεπε να βρούμε τρόπο να περιορίσουμε την περιστροφική κίνηση. Η λύση σε αυτό το πρόβλημα ήρθε με μια γεωμετρική αλλαγή. Αρχικά είχαμε κάνει την σύνδεση του ατέρμονα στο κέντρο του εμβόλου με αποτέλεσμα να διευκολύνεται η περιστροφική κίνηση. Για αυτό το λόγο κάναμε μια δεύτερη τρύπα 3mm πιο πάνω από την πρώτη, με αποτέλεσμα οι δυνάμεις που δέχεται το έμβολο από την έκκεντρη συναρμογή να εμποδίζουν την περιστροφική κίνηση και να μην επιδρούν στην γραμμική.
6. ΥΛΙΚΟ ΜΕΣΑ ΣΤΗ ΣΥΡΙΓΓΑ
Το gel που χρησιμοποιούμε για αυτή την λειτουργία, όπως αναφέρθηκε και παραπάνω χωρίζεται σε 3 είδη.
Αρχικά χρησιμοποιούμε το κυτταρικό υλικό, το οποίο τοποθετούμε μέσα στο alginate για να μπορεί να επιβιώσει και να αναπτυχθεί αργότερα. Για την στερεοποίηση του χρησιμοποιούμε ένα δεύτερο gel το οποίο με τον πολυμερισμό θα σκληρύνει και θα αποτελέσει το στήριγμα του πρώτου. Αυτά τα δύο gel θα βρίσκονται σε σύριγγες σε έναν ειδικά διαμορφωμένο χώρο και από εκεί θα μπορούν οι επιστήμονες να τροφοδοτούν το μηχάνημά μας.
Για πιο επιτυχή διαδικασία πολυμερισμού, μπορούμε να συνδυάσουμε το alginate με φουρφουριλαμίνη με σκοπό την δημιουργία του F-alginate. Mε αυτό τον τρόπο μπορούμε να έχουμε καλύτερα αποτελέσματα. Επίσης, προς αυτή την κατεύθυνση μπορούμε να χρησιμοποιήσουμε και φωτο-εκκινητές, όπως το RoseBengal, οι οποίοι αντιδρούν με το φώς και επιταχύνουν τον πολυμερισμό.
Όπως είπαμε και στην αρχή, το alginate είναι εκχύλισμα από το καφέ φύκι. Χρησιμοποιείται σε πολλές ιατρικές εφαρμογές, έχει αντιβακτηριδιακές ιδιότητες και την ιδιότητα να βιοδιασπάται και αποτελείται από δύο μονομερή (glucuronic acid – mannuronic acid).
7. ΕΠΙΛΟΓΗ UV
Ο λόγος που χρησημοποιούμε UV LED είναι επειδή περιέχει πρωτόνια υψηλής ενέργειας. Για την επιλογή του UV χρειάζεται να βρούμε την ποσότητα της ενέργειας που χρειάζεται για τον πολυμερισμό του alginate. Μέσα από βιβλιογραφία υπολογίσαμε οτι αυτή η ένταση κυμαίνεται στα 6000 mW/cm².
Με αναζήτηση στο διαδίκτυο βρήκαμε μια συσκευή που εκπέμπει αυτή την ένταση, αλλά δεν μπορούσαμε να την αγοράσουμε καθώς το κόστος ξεπερνούσε το budget του project. Η συσκευή, η κεφαλή και ο φακός παρατίθονται παρακάτω.
|| Name
8. ΚΑΤΑΣΚΕΥΑΣΤΙΚΑ ΣΧΕΔΙΑ
9. ΗΛΕΚΤΡΙΚΟ ΚΥΚΛΩΜΑ
Ο γραμμικός επενεργητής που επιλέξαμε περιέχει ενάν βηματικό κινητήρα. Για τον έλεγχο της κίνησης και της ταχύτητας του βηματικού κινητήρα και κατά συνέπεια όλου του γραμμικού επενεργητή φτιάξαμε ένα ηλεκτρικό κύκλωμα και στη συνέχεια έγινε ο προγραμματισμός του. Το κύκλωμα μας περιείχε το εξής hardware:
Η συνδεσμολογία παρουσιάζεται στην παρακάτω εικόνα. Ο σχεδιασμός του κυκλώματος και της συνδεσμολογίας έγινε στο πρόγραμμα fritzing.
Σημείωσεις: το πρόγραμμα που χρησιμοποιήθηκε βρίσκεται ακόμα σε beta έκδοση και δεν είχε όλα τα εξαρτήματα που χρησιμοποιήθηκαν στην πραγματικότητα. Συγκεκριμένα στο πραγματικό κύκλωμα δεν υπάρχουνε μπαταρίες, αλλά ένα τροφοδοτικό 12V. Επίσης αντί για έναν απλό βηματικό κινητήρα που εμφανίζεται στη φωτογραφία έχουμε ένα γραμμικό επενεργητή. Τέλος το led που υπάρχει στο κύκλωμα, αντικαθιστά το UV lazer.
Μετά την σχεδίαση του κυκλώματος ακολούθησε ο προγραμματισμός του βηματικού κινητήρα με σκοπό να πετύχουμε την επιθυμητή παροχή και για να έχουμε έλεγχο της κατεύθυνσης της κίνησης του γραμμικού επενεργητή. Ο προγραμματισμός έγινε με τη χρήση της γλώσσας Wiring (ουσιαστικά πρόκειται για τη γλώσσα προγραμματισμού C++ ).
10. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
constans wont change. set pin numbers
const byte stepUpPin = 4; step pin back button
const byte stepDownPin = 5; step pin foward button
const byte stepOut = 3; step tou drivers se pin 2 uno
const byte directionOut = 2; direction tou driver se pin 3 uno
const byte enablePin = 6; turn EasyDriver off when not turning (saves power but ONLY use when there's no need to hold position)
const byte inMotionPin = 10; UV led
variables will change
byte lastStepUpButtonState = HIGH; the previous reading from the step UP pin (back button)
byte lastStepDownButtonState = HIGH; the previous reading from the step Down pin (foward button)
byte directionState = HIGH; the current direction
byte stepUpState = HIGH; the current state of Up button
byte stepDownState = HIGH; the current state of Down button
int stepsPassed = 0; how many steps
int stepsPassedMax = 1600; steps per revolution
long lastStepUpDebounceTime = 0; the last time the output was toggled
long lastStepDownDebounceTime = 0; the last time the output was toggled
long debounceDelay = 50; the debounce time in ms
long stepDelay=3;
long lastStepTime = 0; last tiem the step signal was sent
void setup() {
pinMode (stepUpPin, INPUT);
pinMode (stepDownPin, INPUT);
pinMode (stepOut, OUTPUT);
pinMode (directionOut, OUTPUT);
pinMode (enablePin, OUTPUT);
pinMode (inMotionPin, OUTPUT);
digitalWrite (inMotionPin, HIGH); turn OFF all LEDs in the beginning
}
void loop() {
read the state of the switch into a local variable:
int readingStepUp = digitalRead(stepUpPin);
int readingStepDown = digitalRead(stepDownPin);
if(readingStepUp == LOW || readingStepDown == LOW) { only read buttons if either of them is LOW
if the switch changed, due to noise or pressing:
if (readingStepUp != lastStepUpButtonState) {
reset the debouncing timer
lastStepUpDebounceTime = millis();
lastStepUpButtonState = readingStepUp;
}
if ((millis() - lastStepUpDebounceTime) > debounceDelay) {
whatever the reading is at, its been there for longer
than the debounce delay, so take it as the actual current state:
lastStepUpButtonState = readingStepUp;
lastStepUpDebounceTime = millis();
stepUpState = readingStepUp;
}
if the switch changed, due to noise or pressing:
if (readingStepDown != lastStepDownButtonState) {
lastStepDownDebounceTime = millis();
lastStepDownButtonState = readingStepDown;
}
if ((millis() - lastStepDownDebounceTime) > debounceDelay) {
whatever the reading is at, its been for longer
than the debounce delay, so take it as the actual current state:
lastStepDownButtonState = readingStepDown;
lastStepDownDebounceTime = millis();
stepDownState = readingStepDown;
}
}else{
stepUpState = HIGH;
stepDownState = HIGH;
} end of if block that reads button states
if(stepsPassed == 0 ) { if the previous command has completed, make the direction desicion
if(stepUpState == LOW || stepDownState == LOW) {
if(stepUpState == LOW && stepDownState == LOW) { directionState = LOW; } why are you holding UP and DOWN buttons
if(stepUpState == LOW && stepDownState == HIGH) { directionState = HIGH; } go UP ( back)
if(stepUpState == HIGH && stepDownState == LOW) {directionState = LOW;} do DOWN ( foward)
stepsPassed = stepsPassedMax+1;
}
}
if(stepsPassed > 0 ) send step signals now
{
digitalWrite(enablePin, LOW); wake up
digitalWrite(directionOut, directionState);
if((millis()- lastStepTime) > stepDelay) delay expired, send another step
{
digitalWrite(stepOut, HIGH);
stepsPassed--;
lastStepTime = millis();
}else
{
time for one step not yet expired, hold the STEP signal LOW
digitalWrite(stepOut, LOW);
}}else{
digitalWrite(enablePin, HIGH); go to sleep
}
if(stepDownState == HIGH) {
digitalWrite(inMotionPin, HIGH);
}else{
digitalWrite(inMotionPin, LOW);
}
}
11. ΜΕΛΛΟΝΤΙΚΑ ΣΧΕΔΙΑ
Αυτό το μοντέλο είναι το πρωτότυπο και είναι αναμενόμενο να παρουσιάζει κάποια ελαττώματα. Η κατασκευή του έγινε με χρήση 2D κατεργασιών με αποτέλεσμα το τελικό τεμάχιο να μην έχει την απαιτούμενη ακρίβεια που χρειαζόμαστε. Για την συναρμογή τους έπρεπε να χρησιμοποιηθούν βίδες με αποτέλεσμα να αυξηθεί αρκετά ο όγκος. Έτσι, χρειάζεται να κατασκευαστεί το σχέδιο με 3d κατεργασίες, ώστε να πετύχουμε την ακρίβεια και να μειώσουμε τις διαστάσεις του.
Θα πρέπει να βρεθεί το UVLED που χρειαζόμαστε, ώστε να μπορέσουμε να ολοκληρώσουμε την συσκευή. Επίσης με κατάλληλο συνδυασμό του βιοπολυμερούς με κάποια συγκεκριμένα photoinitiator (όπως το Rose Begnal) μπορούμε να πετύχουμε την αντίδραση του πολυμερισμού σε μικρότερη ένταση, άρα με μικρότερο κόστος. Για να υπολογιστούν όμως αυτές οι τιμές για τον πολυμερισμό του μείγματος αυτού πρέπει να γίνουν πειράματα και αντίστοιχες μελέτες.
Όσον αφορά το ηλεκτρονικό κομμάτι, στα μελλοντικά σχέδια υπάρχει η σκέψη τοποθέτησης ρυθμιστικού κουμπιού, το οποίο θα μπορεί να μεταβάλει τα βήματα του κινητήρα. Με αυτό το τρόπο θα μπορούμε κατά βούληση να μεταβάλλουμε την παροχή της σύριγγας.
12. ΦΩΤΟΓΡΑΦΙΚΟ ΥΛΙΚΟ
12.1 ΚΙΝΗΤΗΡΑΣ ΣΥΝΔΕΔΕΜΕΝΟΣ ΜΕ ΤΟ ΕΜΒΟΛΟ
12.2 ΑΠΟΤΥΠΩΜΑ ΕΠΩΝΥΜΩΝ
12.3 ΚΙΝΗΤΗΡΑΣ ΣΥΝΔΕΔΕΜΕΝΟΣ ΜΕ ΣΥΡΙΓΓΑ ΚΑΙ ΚΥΡΙΟ ΣΩΜΑ
12.4 ΤΕΛΙΚΗ ΣΥΣΚΕΥΗ
13. ΒΙΒΛΙΟΓΡΑΦΙΑ
Internet links:
Επιστημονικά άρθρα